package br.com.conciliador.consulta.negocio;

import java.util.HashMap;
import java.util.Map;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Order;

import br.com.conciliador.consulta.vo.ConsultaTaxasAdministracaoVo;
import br.com.conciliador.util.hibernate.business.R2HbNgc;
import br.com.r2.util.hibernate.business.RestritorHb;

public class ConsultaTaxasAdministracaoNgc extends R2HbNgc<ConsultaTaxasAdministracaoVo>
{

   private Map filtroPropriedade = new HashMap();

   private Map restritores = new HashMap();

   private static ConsultaTaxasAdministracaoNgc instancia = null;

   private ConsultaTaxasAdministracaoNgc()
   {
      init(restritores, filtroPropriedade, ConsultaTaxasAdministracaoVo.class);
      addFiltro("dataVenda", RestritorHb.RESTRITOR_DATA_INICIAL,"filtro.dataVendaInicial");
      addFiltro("dataVenda", RestritorHb.RESTRITOR_DATA_FINAL,"filtro.dataVendaFinal");
   }

   public static ConsultaTaxasAdministracaoNgc getInstancia()
   {
      if (instancia == null)
      {
         instancia = new ConsultaTaxasAdministracaoNgc();
      }
      return instancia;
   }


   @Override
   protected Criteria montaCriteria(Session sessao, int join)
   {
      Criteria criteria = sessao.createCriteria(ConsultaTaxasAdministracaoVo.class);
      return criteria;
   }

   @Override
   protected Map filtroPropriedade()
   {
      return filtroPropriedade;
   }

   @Override
   protected Map restritores()
   {
      return restritores;
   }

   @Override
   protected void setarOrdenacao(Criteria criteria, ConsultaTaxasAdministracaoVo filter, int join)
   {
      criteria.addOrder(Order.asc("dataVenda"));
      criteria.addOrder(Order.asc("nomeLoja"));
      criteria.addOrder(Order.asc("nomeBandeira"));
      criteria.addOrder(Order.asc("nomeProduto"));
      criteria.addOrder(Order.desc("valorBruto"));
   }

}
